<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed");

class Vendas extends CI_Controller {
		
	public function __construct(){
		parent::__construct();
		init_painel();
		esta_logado();
	}

	public function index(){
		$this->gerenciar();
	}
	
	public function cadastrar(){
		$this->form_validation->set_rules('id_comprador', 'CLIENTE', '');
		$this->form_validation->set_rules('tipo_venda', 'TIPO DE VENDA', '');
		$this->form_validation->set_rules('parcelaspagseguro', 'QUANTIDADE DE PARCELAS', '');
		$this->form_validation->set_rules('tipo_pagamentopagseguro', 'TIPO DE PAGAMENTO', '');
		$this->form_validation->set_rules('tipoenvio', 'TIPO DE ENTREGA', '');
		$this->form_validation->set_rules('valor_frete', 'VALOR DO FRETE', '');
		$this->form_validation->set_rules('codigo_rastreio', 'CÓDIGO DE RASTREIO', '');
		$this->form_validation->set_rules('valor_reajustado', 'VALOR DO DESCONTO', '');
		if ($this->form_validation->run()==TRUE):
			if($this->cart->contents() == NULL):
				set_msg('msgerro', 'O carrinho está vazio.', 'erro');
				redirect(current_url());
			endif;
			$dados = elements(array('id_comprador', 'parcelaspagseguro', 'tipo_pagamentopagseguro', 'tipoenvio', 'valor_frete', 'codigo_rastreio'), $this->input->post(NULL, TRUE));
			$preco = 0;
			foreach ($this->cart->contents() as $items):
				extract($items);
				$preco = $preco + ($price*$qty);
			endforeach;
			$dados['id_tipos_venda'] = $this->input->post('tipo_venda');
		
			//ultimo id da venda
			$ultimo_id = $this->vendas->get_byultimoid()->row();
			$dados['cod_pedido'] = $ultimo_id->id+281640;
			$valor_reajustado = $this->input->post('valor_reajustado');
			($valor_reajustado > 0) ? $preco = $valor_reajustado : '';
			$dados['valor_compra'] =  $preco;
			$dados['valor_final_compra'] = ($preco + $dados['valor_frete']);
			($this->input->post('tipo_pagamentopagseguro') != 93) ? $statuspagseguro = 3 : $statuspagseguro = 1;
			$dados['statuspagseguro'] = $statuspagseguro;
			$dados['created'] = date('Y-m-d H:i:s');
			$id_venda = $this->vendas->do_insert($dados);
			
			//Carrega todos os itens do carrinho
			$cont = 0;
			foreach ($this->cart->contents() as $items):
				$cont ++;
				extract($items);
				extract($options);
				$produtos['id_venda'] = $id_venda;
				$produtos['id_produto'] = $id;
				$produtos['id_sku'] = $id_sku;
				$produtos['quantidade'] = $qty;
				$produtos['valor'] = $price;
				$produtos['created'] = date('Y-m-d H:i:s');
				
				$sku = $this->sku->get_byid($id_sku)->row();
				$estoque['quantidade'] = $sku->quantidade - $produtos['quantidade'];
				$this->sku->do_update($estoque, array('id'=>$id_sku), FALSE);
				
				//aumentar o valor da venda do produto
				$qtde_venda = $this->produtos->get_byid($id)->row();
				$dadosProdutos['mais_vendidos'] = $qtde_venda->mais_vendidos + $qty;
				
				$this->produtos->do_update($dadosProdutos, array('id'=>$id), FALSE);
				
				$this->venda_item->do_insert($produtos);
				
				$this->cart->destroy();
			endforeach;
			
			$id_comprador = $this->input->post('id_comprador');
			if($id_comprador != '0' && $id_comprador != NULL):
				$comprador = $this->compradores->get_byid($id_comprador)->row();
				$vendas = $this->vendas->get_byid($id_venda)->row();
				global $email_site;
				//email para cliente
				$this->sistema->enviar_email($comprador->email, $email_site, 'Pedido #'.$dados['cod_pedido'].' efetuado com sucesso', email_venda_fisica($comprador->nome, $vendas->cod_pedido, $vendas->created));
			endif;
			
		    set_msg('msgok', 'Venda realizada com sucesso', 'sucesso');
			
			$this->cart->destroy();
			
			redirect(current_url());
		endif;
		$data = array(
			'tela' 	=> 'cadastrar'
		);
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min')));
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'app.min')));
		set_tema('titulo', 'Cadastro de Venda');
		set_tema('conteudo', load_modulo('painel', 'vendas', $data));
		load_template();
	}

	public function gerenciar(){
		$data = array(
			'tela' => 'gerenciar',
			'query' => $this->vendas->get_all()->result()
		);
		set_tema('headerinc', load_css(array('datatables/dataTables.foundation.min')));
		set_tema('footerinc', load_js(array('datatables/jquery.dataTables.min', 'datatables/dataTables.foundation.min', 'app.min')));
		set_tema('titulo', 'Listagem de Vendas');
		set_tema('conteudo', load_modulo('painel', 'vendas', $data));
		load_template();
	}

	public function editar(){
		global $email_site;
		$this->form_validation->set_rules('cod_rastreio', 'CÓDIGO DE RASTREIO', 'strtoupper');
		$this->form_validation->set_rules('statuspagseguro', 'SITUAÇÃO DE PAGAMENTO', 'required');
		if ($this->form_validation->run()==TRUE):
			$venda = $this->vendas->get_byid($this->input->post('id_venda'))->row();
			$dados = elements(array('codigo_rastreio', 'statuspagseguro'), $this->input->post(NULL, TRUE));
			if($this->input->post('codigo_rastreio') == NULL ||  $this->input->post('codigo_rastreio') == ''):
				$teste = 'teste';
			else:
				$comprador = $this->compradores->get_byid($venda->id_comprador)->row();
				$this->sistema->enviar_email($comprador->email, $email_site, 'Seu Pedido #'.$venda->cod_pedido.' foi postado', email_codigo_rastreio($comprador->nome, $venda->cod_pedido, $this->input->post('codigo_rastreio')));
			endif;
			$this->vendas->do_update($dados, array('id'=>$venda->id));
			set_msg('msgok', 'Dados alterados com sucesso.', 'sucesso');
			redirect(current_url());
		endif;
		$idvendas = $this->uri->segment(4);
		if ($idvendas == NULL):
			set_msg('msgerro', 'Escolha uma venda para alterar.', 'erro');
			redirect('painel/vendas/gerenciar');
		endif;
		$data = array(
			'tela'	=> 'editar',
			'query'	=> $this->vendas->get_byid($idvendas)->row()
		);
		set_tema('footerinc', load_js(array('app.min')));
		set_tema('titulo', 'Alteração de Venda');
		set_tema('conteudo', load_modulo('painel', 'vendas', $data));
		load_template();
	}

	public function excluir(){
		if (is_admin(TRUE)):
			$idvendas = $this->uri->segment(4);
			if ($idvendas != NULL):
				$query = $this->vendas->get_byid($idvendas);
				if ($query->num_rows()==1):
					$query = $query->row();
					$this->vendas->do_delete(array('id'=>$query->id), FALSE);
				endif;
			else:
				set_msg('msgerro', 'Escolha um titulo para excluir', 'erro');
			endif;
		endif;
		redirect('painel/vendas/gerenciar');
	}
	
	public function adicionar_carrinho(){
		$produtos = $this->input->post('produtos');
		$qtde_array = count($produtos);
		for($i = 0; $i < $qtde_array; $i++):
			$produto = $this->produtos->get_byid($produtos[$i])->row();
			$sku = $this->sku->get_byid($produto->id, 'id_produto')->row();
			if($sku->quantidade <=0 ):
				set_msg('msgerro', 'O produto '.$produto->nome.' está indisponível no estoque.', 'erro');
				redirect(base_url('painel/vendas/cadastrar'));
			endif;
			$carrinho['id'] = $produto->id;
			$carrinho['qty'] = 1;
			$carrinho['price'] = $produto->valor_desconto;
			$carrinho['name'] = remove_acentos($produto->nome);
			$carrinho['options'] = array(
				'nome' => $produto->nome,
				'id_sku' => $sku->id,
				'tipoatributo' => $produto->id_tipoatributo
			);
			$this->cart->insert($carrinho);
		endfor;
		redirect(base_url('painel/vendas/cadastrar'));
	}
	
	public function atualizar_carrinho($redirect = true){
		$this->load->model('produtos_model', 'produtos');
		$this->load->model('sku_model', 'sku');
		$this->load->model('skuatributo_model', 'skuatributo');
		$this->load->model('atributo_model', 'atributo');
		$contador = $this->input->post('cont', TRUE);
		for($i =1; $i <= $contador; $i++){
			$produto = $this->produtos->get_byid($this->input->post('id'.$i, TRUE))->row();
			$identifica = $this->input->post('id_sku'.$i, TRUE);
			if($identifica != NULL):
				$sku = $this->sku->get_byid($identifica)->row();
				if($this->input->post('qty'.$i, TRUE) > $sku->quantidade):
					($sku->quantidade == 1) ? $peças = $sku->quantidade.' peça no estoque' : $peças = $sku->quantidade.' peças no estoque';
					set_msg('msgerro', 'O produto '.$produto->nome.' possui '.$peças.'. Favor preencher com valor menor ou igual a '.$sku->quantidade.'.', 'erro');
					redirect(base_url('painel/vendas/cadastrar'));
				endif;
			else:
				$sku = $this->sku->get_byid($produto->id, 'id_produto')->row();
				if($this->input->post('qty'.$i, TRUE) > $sku->quantidade):
					set_msg('msgerro', 'O produto '.$produto->nome.' possui '.$sku->quantidade.' peças no estoque. Favor preencher com valor menor ou igual a este valor.', 'erro');
					redirect(base_url('painel/vendas/cadastrar'));
				endif;
			endif;
					
			$data = array(
				'rowid'     => $this->input->post('rowid'.$i, TRUE),
				'qty'     	=> $this->input->post('qty'.$i, TRUE),
				'price'     => $this->input->post('price'.$i, TRUE),
			);
			$this->cart->update($data); 
		}
		if($redirect == true) redirect(base_url('painel/vendas/cadastrar'));
	}
	
	public function excluir_item(){
		$i = $this->uri->segment(4);
		$data = array(
			'rowid'     => $i,
			'qty'     	=> 0,
		);
		$this->cart->update($data); 
		redirect(base_url('painel/vendas/cadastrar'));
	}
	
}

/* End of file vendas.php */
/* Location: ./application/controllers/vendas.php */